package com.crud.interceptors;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * 拦截器调用的相关方法都可以在springmvc的
 * @author Lee
 *
 */
public class SecodnInteceptor implements HandlerInterceptor{

	/**
	 * 在调用目标方法之前被调用，Interceptor被调用的顺序都可以在DispatcherServlet中找到
	 * 如果该方法返回值为false，则后续的代码都不会被执行，包括后续的拦截器和目标方法
	 * 该方法可以考虑做权限、日志、事务等
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("[SecodnInteceptor] preHandle");
		return true;
	}

	/**
	 * 在调用目标方法之后，渲染视图之前被调用
	 * 可以对请求域中的属性进行修改
	 * 可以对ModelView中的属性进行修改，比如修改转向的视图
	 */
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("[SecodnInteceptor] postHandle");		
	}

	/**
	 * 在调用渲染视图之后被调用
	 * 释放资源	
	 */
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("[SecodnInteceptor] afterCompletion");		
	}

}
